{extend name="layout" /}


{block name="title"}
<title>安装使用 - thinkPHP极速后台开发</title>
<meta name="title" content="安装使用 - thinkPHP极速后台开发">
<meta name="keywords" content="安装使用,php,后台开发包，thinkphp、easyadmin、admin,easy,thinkeasyadmin">
<meta name="description" content="安装使用,快速开始指引;easyadmin灵活可定制的thinkphp的后台开发工具包,助你快速开发后台">
{/block}

{block name="main"}


<fieldset id="install" class="layui-elem-field">
    <legend>composer 安装</legend>
    <div class="layui-field-box">
                    <pre class="php">
composer require wansh/thinkphpeasyadmin
</pre>
    </div>



</fieldset>


<fieldset  class="layui-elem-field">
    <legend>直接使用 </legend>
    <p>github 下载源码；然后在入口文件直接引入；例如我是放在项目根目录；</p>
    <p>在入口文件 注册自动加载</p>
    <div class="layui-field-box">
                    <pre class="php">
spl_autoload_register(function ($class) {
    $class = str_replace('easyadmin\\','',$class);
    $class = str_replace("\\","/",$class);

    $file = '../thinkphpeasyadmin/src/' . $class . '.php';
    if(is_file($file)){
        include $file;
    }

});
</pre>
        <p>需要注意的是； 直接使用需要 composer 引入tp 相关的组件；</p>
        <pre class="php">
// 验证码
composer require topthink/think-captcha

// thinkTemplate模板引擎
composer require topthink/think-view

// 多应用
composer require topthink/think-multi-app
</pre>
    </div>
</fieldset>



<fieldset id="use" class="layui-elem-field">
    <legend>使用</legend>
    <div class="layui-field-box">
        <ol>
            <li>1. 首先创建 admin 模块,也就是创建 project\app\admin\ 目录</li>
            <li>2. 如果是 Linux 环境 需要给 <code>project\app\admin\</code> <code>project\public</code> 2个目录写入权限; 会创建一些默认文件</li>
            <li>3. 如下创建 Index 控制器 继承<code>\easyadmin\controller\Admin</code>类 ,后浏览器访问即可安装成功</li>
        </ol>
        <pre class="php">{literal}
#project\app\admin\controller\Index.php

namespace app\admin\controller;


class Index extends \easyadmin\controller\Admin
{
    public function index(){
        return 'index'
    }
}

{/literal}</pre>
        <p>打开浏览器 访问 <a href="http://localhost/admin/">http://localhost/admin/</a></p>
        <p>首次访问,会执行安装程序</p>
        <ol>
            <li>生成控制器</li>
            <li>生成中间件</li>
            <li>生成配置文件</li>
            <li>创建视图文件</li>
            <li>创建管理员表</li>
        </ol>
        <p>安装成功以后,刷新页面 会看到登录界面</p>
        <p>不想使用登陆注册,直接进入系统? 配置文件 project\app\admin\config\login.php 中 enable_login=false 即可 </p>
        <img style="max-width: 800px;" src="/doc_img/login.png" alt="使用">

        <blockquote class="layui-elem-quote">
            如果一直提示验证码错误; <br>
            由于默认 session 是采用文件存储,session 是存储在 project\runtime\session 目录中; 所以需要 给 project\runtime\ 目录写入权限
        </blockquote>

        <h3>生成的目录结构如下</h3>
        <div id="dir_files"></div>

        <fieldset id="tabname" class="layui-elem-field layui-field-title">
            <legend>基础配置 - 表名称 - 主键 等</legend>
            <div class="layui-field-box">
                <p>默认会取<code>当前控制器</code>的名称做为数据库的表名,<code>id</code>做为主键去查询数据;如果需要自定义配置数据库表名和主键,可使用如下配置:</p>
                <pre class="php">
#project\app\admin\controller\Category.php

namespace app\admin\controller;

class Index extends \easyadmin\controller\Admin
{
    protected $pageName = '任务'; //页面显示名称
    protected $tableName = 'category';//数据库表名 默认取当前控制器名称
    protected $pk = 'id';//主键, 默认 id

}
</pre>


                <p><b>全局配置,</b> 定义 Admin 类,其他页面继承即可</p>
                <pre class="php">
#project\app\admin\controller\Category.php

namespace app\admin\controller;

use easyadmin\app\libs\Menu;
use easyadmin\app\libs\MenuItem;

class Index extends \easyadmin\controller\Admin
{
    protected $siteName = '网站标题'; //定义网站标题

    // 也支持 直接输出 html
    protected $siteName = '&lt;img src=&quot;/intro/400x400@50x10.png&quot;  alt=&quot;thinkEasyAdmin&quot; style=&quot;width: 45px;height: 45px;margin-right: 5px;border-radius: 50%&quot;&gt;EasyAdmin';

    protected $jsFiles = []; //添加全局的 js 文件
    protected $cssFiles = []; //添加全局的 css 文件

    //定义 左侧导航
    public function configMenu(Menu $menu){

    }
}
</pre>


            </div>
        </fieldset>
    </div>
</fieldset>

{/block}


{block name="body_js"}
<script>
    layui.use('tree', function () {
        var tree = layui.tree;

        tree.render({
            elem: '#dir_files',  //绑定元素
            onlyIconControl: true
            , data: [{
                title: 'admin',
                spread: true,
                children: [
                    {
                        title: 'config',
                        spread: true,
                        children: [
                            {title: 'login.php  -- 登录注册权限配置文件'},
                        ]
                    },
                    {
                        title: 'controller',
                        spread: true,
                        children: [
                            {title: 'Admin.php   -- 基础控制器 其他控制器继承这个控制器'},
                            {title: 'Manage.php  -- 管理员控制器 增删改查'},
                            {title: 'Index.php   -- 默认的后台入口控制器,颜色自定义页面'},
                            {title: 'Login.php   -- 注册登录控制器'},
                        ]
                    },
                    {
                        title: 'views',
                        spread: true,
                        children: [
                            {
                                title: 'index',
                                children: [
                                    {title: 'index.html  --  入口模板文件'},
                                ]
                            },
                            {
                                title: 'manage',
                                children: [
                                    {title: 'lists.html  -- 管理员列表模板文件'},
                                ]
                            },
                        ]
                    },
                    {
                        title: 'middleware',
                        spread: true,
                        children: [
                            {title: 'Login.php  --  登录权限相关中间件'},
                        ]
                    },
                    {title: 'middleware.php  中间件配置'}

                ]
            }]
        });
    });
</script>
{/block}
